package com.effvi.jdk.collection.weakhashmap;

import java.util.ArrayList;
import java.util.List;
import java.util.WeakHashMap;
/**
 * 测试WeakHashMap（会自动释放未使用的内容）
 * @author kelvin.zhang
 *
 */
public class WeakHashMapB {
	public static void main(String[] args) throws Exception {
		Thread.sleep(8000);
        List<WeakHashMap<byte[][], byte[][]>> maps = new ArrayList<WeakHashMap<byte[][], byte[][]>>();
        for (int i = 0; i < 3000; i++) {
            WeakHashMap<byte[][], byte[][]> d = new WeakHashMap<byte[][], byte[][]>();
            d.put(new byte[1000][1000], new byte[1000][1000]);
            maps.add(d);
            System.gc();
            System.err.println(i);
            for (int j = 0; j < i; j++) {//这就是区别,当使用到WeakHashMap的时候才释放资源,而不是马上释放
                System.err.println(j + " size" + maps.get(j).size());
            }
        }
    }
}